/**

实现一个函数，检查一棵二叉树是否为二叉搜索树。

示例 1:
输入:
    2
   / \
  1   3
输出: true
示例 2:
输入:
    5
   / \
  1   4
     / \
    3   6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
     根节点的值为 5 ，但是其右子节点值为 4 。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/legal-binary-search-tree-lcci
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。


 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isValidBSTHelper(TreeNode* root,long int left,long int right) 
    {
        if(root == 0)
            return true;;
        if(left< root->val && root->val < right)
        {
            return isValidBSTHelper(root->left,left,root->val ) &&
                    isValidBSTHelper(root->right,root->val, right) ;
        }
        else
        {
            return false;
        }
    }
    bool isValidBST(TreeNode* root) {
        //if(root && root->left ==0 )
        return isValidBSTHelper( root,(long int)INT_MIN-1, (long int)INT_MAX+1) ;
    }
};